<!DOCTYPE html>
<body>
<script src="../../../resources/js-test.js"></script>
<script>

function newRange() {
	var range = document.createRange();
	range.selectNodeContents(iframe);
	return range;
}

function checkRange() {
	shouldBe("range.startContainer", "iframe.contentDocument.body");
	shouldBeTrue("range.collapsed");
}

description("Range set* functions should not throw WRONG_DOCUMENT_ERR.");
window.iframe = document.createElement("iframe");
document.body.appendChild(iframe);
iframe.contentDocument.write("<html><head><body>content</body></html>");

// Move range start to the iframe document. According to the DOM
// Range spec, this should collapse the Range to the new boundary.
// http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html#Level-2-Range-Changing
// http://www.w3.org/TR/dom/#interface-range

window.range = newRange();
shouldNotThrow("range.setStart(iframe.contentDocument.body, 0)");
checkRange();

window.range = newRange();
shouldNotThrow("range.setEnd(iframe.contentDocument.body, 0)");
checkRange();

window.range = newRange();
shouldNotThrow("range.setStartAfter(iframe.contentDocument.body.firstChild)");
checkRange();

window.range = newRange();
shouldNotThrow("range.setStartBefore(iframe.contentDocument.body.firstChild)");
checkRange();

window.range = newRange();
shouldNotThrow("range.setEndAfter(iframe.contentDocument.body.firstChild)");
checkRange();

window.range = newRange();
shouldNotThrow("range.setEndBefore(iframe.contentDocument.body.firstChild)");
checkRange();

iframe.parentNode.removeChild(iframe);
</script>
</body>
